#ifndef NODE_H
#define NODE_H

#include <vector>
#include "glm/glm.hpp"
#include "Object.h"


namespace renderengine {
    class Geometry;
    class Node :public Object {
    public:
        Node();
        ~Node();
        typedef std::vector< std::shared_ptr<Node> > NodeList;
        typedef std::vector< Node*> ParentList;
        typedef std::vector< std::shared_ptr<Geometry> > GeometryList;

        void addChild(std::shared_ptr<Node> _child);
        void addGeometry(std::shared_ptr<Geometry> _geometry);
    private:
        glm::mat4 m_transform;
        GeometryList m_geometry;

        NodeList m_children;
        ParentList m_parent;
    };
}

#endif // !NODE_H
